1. Field of the Invention
The present invention relates to communication in information exchange systems, particularly to communication in distributed network systems, and more particularly to communication in distributed network systems with Web-based (e.g., Hypertext Transmission Protocol, HTTP) communications components.
2. Description of Related Art
With the popularity of the Internet, it has fueled a great demand in business-to-business and business-to-consumer Internet applications. Many organizations have established Web-based distributed applications for dissemination or collection of information, or to extend remote control and command capabilities of processes through Web-based interfaces. For many such distributed systems it is desirable to establish optimized communication channels between the client-side user agent process and a server-side process. Optimized channels ensure that a minimum of data needs to be transmitted through the network between the client and server processes, and also ensures that data is transferred quickly and efficiently from a client-side user agent process to a server process.
In the past, one common technique for establishing optimized communication channels between a client-side user agent process and a server-side process is to provide multiple, well-known connection points for a distributed system. This technique requires the user to choose a communication channel type, usually by choosing from amongst a set of contenders available through a user interface. For example, a server may publish an HTML page through an HTTP server, wherein several different links are available. One link is to be used by users who know their user agent software (e.g., a xe2x80x9cbrowserxe2x80x9d) supports a particular scripting language. Another link to be used by users who know their user agent software supports a Java Applet execution environment. Several other links may also be made available. Such techniques require user interaction to indicate an execution environment that can support construction of a client/server communication channel. However, user interaction is not desirable because users may be ignorant of the ramifications of different choices. Users may also incorrectly believe a particular execution environment is made available through the user agent software.
Another common technique in the past involves the server-side software remotely determining which client-side execution environment is available. Such systems often rely on user agent software reporting its type and even version to the server process. Either through empirically defined lookup tables or more heuristic decision trees, the server software selects an execution environment likely to be available within the client""s user agent process, and targets content towards that execution environment. Use of such techniques can be very difficult on server-side software administrators and content developers. First of all, the heuristic algorithms or empirically derived feature tables must be developed and tested, which can be a long and expensive operation. Second, continual changes to the concept and available features of different user agent software packages require the continual maintenance of the server-side mechanisms. Both problems can only be solved through continuous dedication of a relatively large amount of resources.
Accordingly, it is desirable to create a process that provides a more efficient mechanism by which the client-side channel endpoint feature is automatically detected and an optimal protocol is automatically selected to establish a communication channel with the server process.
The present invention is directed to an improved system and method for establishing client/server communication channel in information exchange systems. In accordance with one aspect of the present invention, a client/server communication channel is established in a distributed network environment by deploying a communication agent at the client side for automatically determining the client-side endpoint feature and selecting the optimal (e.g., most efficient and stable) communication protocol based on such feature (e.g., client configuration, firewall, Applet support, browser type). The communication agent may have a relatively small file size on the order of 10 Kb.
In another aspect of the present invention, a full duplex (two-way) client/server communication is established which requires no installation on the client-side. The communication agent is configured to stay connected to the server for the duration of the session, if the client provides an executable environment capable of establishing full duplex connections to the server. This eliminates the unnecessary, network intensive opening and closing of connections for every client request (which includes many router-hopes for most Web users). The complex logic of software applications may be maintained at the server end for continuous access by the clients. Further, keeping the connection active means that the server can create a virtual aggregate of users. This features enables the server to supply publish and subscribe capabilities as well as other full duplex communications with the complex logic at the server end and a thin-client at the client-side. As long as clients are connected, no polling is required by the client to receive notification from the server.
In another aspect of the present invention, the communication agent comprises a cascading user interface that determines the most efficient and stable way to connect to the server (e.g., from an 8 Kb applet, an ActiveX control to a Java Script client). The cascading interface is configured to allow the server to supply different levels of service to the client based on the client environment. A universal Java Script translator may be provided to translate server commands or requests to Java Script in case Applet cannot be run on the client-side. This feature allows deployment of a single solution that is supported whether the client is capable of running Applets.
In yet another embodiment of the present invention, the communication agent further comprises a browser integrator that enables the communication agent to detect activities within the browser such as simple navigation, frame structures, data field synchronization and dynamic images.
In a further aspect of the present invention, a number of clients can stay connected to the server via one or more other clients. The clients are extensions of the generic communication agent, and allow application specific implementations. The server can interact differently with each client, allowing many layers of customization of the server by way of the intermediate client(s) connected between a client and the server.
In one embodiment of the present invention, a TCP/IP-based software application client/server communication channel construction mechanism is presented. The mechanism constructs TCP/IP-based channels dedicated to bi-directional data transmission for a single client/server session. The server software, running on a server host computer, provides session-based data services to one or more software clients. Client software processes initiate communications with the server software process through a recognized type of request in order to use the data services provided by the server software process. The server software process responds to the client""s request with content including downloadable, executable code and invoking such executable code or invoking executable code already installed in the client computer. The dynamically invoked code targets a client process that supports one or more execution environments including: text-based scripting, Java dynamic component loading and execution, or dynamic download and execution of ActiveX components. The invoked code executing within the client computer detects the most attractive execution environment available within its execution environment, and uses the services of that execution environment client process to establish an optimal communication channel back to the server software process. Depending on the execution environment(s) available to the invoked code, the communication channel may be: (a) a content-independent, bi-directional transmission control protocol (TCP) connection, or (b) a content-dependent TCP connection, such as a TCP connection supporting only a single HTTP request/response pair. The downloaded code executing within the client process and the server process undergo handshaking correspondence through the newly established communication channel to bind a server-side session to the channel. The exact handshaking protocol is dependent on the type of connection the invoked code executing within the client machine was able to construct back to the server process.